<?php

Class Usuario{
	
	public $nome;
	public $telefone;
	public $cep;
	public $idUsuario;
	public $endereco;
	public $email;
	public $cidade;
	public $UF;
	public $login;
	public $senha;
	public $classificacao;
	public $bairro;
	public $imgUsuario;
	public $cdTipoTelefone;	
	public $cdWishlist;	
	
	function __construct($mNome, $mTelefone , $mCep , $mEndereco , $mEmail , $mCidade , $mUF , $mLogin , $mSenha , $mBairro, $imgusuario, $cdTipoTelefone) {
	
		$this->nome = $mNome;
		$this->telefone = $mTelefone;
		$this->cep = $mCep;		
		$this->endereco = $mEndereco;
		$this->email = $mEmail;
		$this->cidade = $mCidade;
		$this->UF = $mUF;
		$this->login = $mLogin;
		$this->senha = $mSenha;		
		$this->bairro = $mBairro;
		$this->imgUsuario = $imgusuario;
		$this->cdTipoTelefone = $cdTipoTelefone;
	}	

	function insereUsuario($mDb){		
		try{	
			$result = $mDb->query('select cd_cidade from cidade where ds_cidade like \'%'.$this->cidade.'%\';');
			$cd_cidade = $result->fetch();
			
			$result = $mDb->query('select cd_uf from uf where ds_uf like \'%'.$this->UF.'%\';');
			$cd_estado = $result->fetch();
	
			$mDb->exec('INSERT INTO `logradouro` (`nr_cep`, `cd_cidade`, `cd_uf`, `cd_tipo_logradouro`, `ds_logradouro`, `nr_logradouro`,`ds_bairro`) VALUES (\''.$this->cep.'\',\''.$cd_cidade['cd_cidade'].'\',\''.$cd_estado['cd_uf'].'\',1,\''.$this->endereco.'\',10,\''.$this->bairro.'\');'
			.'INSERT INTO `wishlist` (`nr_qtditensmax`) VALUES(10);'
			.'INSERT INTO `usuario`
						(`cd_wishlist`,
						 `nm_usuario`, 
						 `ds_email`, 
						 `ds_login`,
						 `ds_senha`, 
						 `nr_classificacao`,
						 `cd_logradouro`)'
				.'VALUES ((select max(cd_wishlist) from wishlist),
						  \''.$this->nome.'\',
						  \''.$this->email.'\',
						  \''.$this->login.'\',
						  \''.$this->senha.'\',
						  \''.$this->classificacao.'\',
						  (select max(cd_logradouro) from logradouro));'
						  
				.'INSERT INTO `telefone`
						(`nr_telefone`,
						 `cd_tipo_telefone`)'
				.'VALUES (\''.$this->telefone.'\',\''.$this->cdTipoTelefone.'\');'
				
				.'INSERT INTO `telefone_usuario`
						(`nr_telefone`,
						 `cd_wishlist`,
						 `cd_usuario`)'
				.'VALUES (\''.$this->telefone.'\',(select max(cd_wishlist) from wishlist),(select max(cd_usuario) from usuario));'
				
			);
		} catch(Exception $e) {
    		echo $e->getMessage();
		}		
		
	}	

	function editaUsuario($mDb){

		try{
			$result = $mDb->query('SELECT cd_usuario from usuario WHERE ds_login = \''.$this->login.'\';');
			$cd_usuario = $result->fetch();			
			$mDb->exec('UPDATE `usuario` 
						SET `nm_usuario`=\''.$this->nome.'\',
							`ds_email`=\''.$this->email.'\'
						WHERE cd_usuario = \''.$cd_usuario['cd_usuario'].'\';

						UPDATE  Logradouro  as lo
						INNER JOIN Usuario usu
						ON usu.cd_logradouro = lo.cd_logradouro
						SET lo.ds_logradouro=\''.$this->endereco.'\',
							lo.cd_cidade=(select cd_cidade from cidade where ds_cidade like \'%'.$this->cidade.'%\'),
							lo.cd_uf=(select cd_uf from uf where cd_uf like \'%'.$this->UF.'%\'),
							lo.nr_cep='.$this->cep.',
							lo.ds_bairro=\''.$this->bairro.'\'	
						 WHERE usu.cd_usuario = \''.$cd_usuario['cd_usuario'].'\';
						 
						 UPDATE Telefone_Usuario as tu
						 INNER JOIN Telefone t on
						 t.nr_telefone = tu.nr_telefone
						 SET tu.nr_telefone = '.$this->telefone.', t.nr_telefone = '.$this->telefone.'
						 WHERE tu.cd_usuario = \''.$cd_usuario['cd_usuario'].'\';');

		}catch(Exception $e) {
    		echo $e->getMessage();
		}
	}
}

/**
* Classe para usuários já cadastrados
*/
Class UsuarioCadastrado extends Usuario implements JsonSerializable
{
	
	function __construct($queryResult){

		$this->nome = $queryResult['nm_usuario'];
		$this->telefone = $queryResult['nr_telefone'];
		$this->cep = $queryResult['nr_cep'];
		$this->idUsuario = $queryResult['cd_usuario'];
		$this->endereco = $queryResult['ds_endere'];
		$this->email = $queryResult['ds_email'];
		$this->cidade = $queryResult['nm_cidade'];
		$this->UF = $queryResult['ds_UF'];
		$this->login = $queryResult['ds_login'];
		$this->classificacao = $queryResult['nr_classificacao'];
		$this->bairro = $queryResult['ds_bairro'];
		$this->cdTipoTelefone = $queryResult['cd_tipo_telefone'];
		$this->cdWishlist = $queryResult['cd_wishlist'];
	}

	public function jsonSerialize () {
        return array(
        	'nome'=>$this->nome,
			'telefone'=>$this->telefone,
			'cep'=>$this->cep,
			'idUsuario'=>$this->idUsuario,
			'endereco'=>$this->endereco,
			'email'=>$this->email,
			'cidade'=>$this->cidade,
			'UF'=>$this->UF,
			'login'=>$this->login,
			'classificacao'=>$this->classificacao,
			'bairro'=>$this->bairro,
			'cdWishlist'=>$this->cdWishlist
			//'cdTipoTelefone'=>$this->cdTipoTelefone			
        );
    }
	
}	

?>